const adCache = {
  rewarded: {},
  interstitial: {},
};

/*
showRewardedAd().then(success => {
  if (success) {
    // 奖励用户
  } else {
    wx.showToast({ title: '请完整观看广告获得奖励', icon: 'none' });
  }
});
*/

/**
 * 显示激励视频广告
 * @param {string} adUnitId 广告位 ID
 * @returns {Promise<boolean>} 用户是否完整观看
 */
function showRewardedAd(adUnitId = 'adunit-ed0a93ae13e1852b') {
  return new Promise((resolve, reject) => {
    if (!wx.createRewardedVideoAd) {
      console.warn('当前基础库版本不支持激励视频广告');
      return reject(new Error('不支持广告'));
    }

    let ad = adCache.rewarded[adUnitId];
    if (!ad) {
      ad = wx.createRewardedVideoAd({ adUnitId });
      adCache.rewarded[adUnitId] = ad;

      ad.onLoad(() => {
        console.log('激励广告加载成功');
      });

      ad.onError((err) => {
        console.error('激励广告加载失败', err);
      });
    }

    ad.onClose((res) => {
      resolve(res && res.isEnded === true);
    });

    ad.show().catch(() => {
      ad.load()
        .then(() => ad.show())
        .catch((err) => {
          console.error('激励广告展示失败', err);
          reject(err);
        });
    });
  });
}

/**
 * 显示插屏广告
 * @param {string} adUnitId 广告位 ID
 */
function showInterstitialAd(adUnitId = 'adunit-b962d4b6957d76f4') {
  if (!wx.createInterstitialAd) {
    console.warn('当前基础库版本不支持插屏广告');
    return;
  }

  let ad = adCache.interstitial[adUnitId];
  if (!ad) {
    ad = wx.createInterstitialAd({ adUnitId });
    adCache.interstitial[adUnitId] = ad;

    ad.onLoad(() => {
      console.log('插屏广告加载成功');
    });

    ad.onError((err) => {
      console.error('插屏广告加载失败', err);
    });

    ad.onClose(() => {
      console.log('插屏广告关闭');
    });
  }

  ad.show().catch((err) => {
    console.error('插屏广告展示失败', err);
  });
}

// 导出函数
module.exports = {
  showRewardedAd,
  showInterstitialAd
};